"""
集合是一个无序的复合数据类型，且集合中的元素值是唯一的，即集合中的元素是不重复的。
所谓无序，指的是集合中的元素是没有顺序的，并不能像列表那样通过索引来访问集合中的元素。
在Python中，集合通常用花括号（{}）表示，并且用英文逗号（,）将其中的元素分隔开。基本语法形如
集合名 = {元素, 元素, 元素, ..., 元素}
"""
students_set = {"xiaoming", "xiaohong", "xiaohei", "xiaogang"}
print(students_set)
#如果想初始化一个空集合，可以直接使用set()内置函数进行初始化。其基本语法形如
#集合名 = set()
empty_set = set()
print(empty_set)
#集合元素的查询通常直接使用成员关键字in来进行。
#对集合使用成员关键字in的效率要远高于对列表使用成员关键字in。
nums_set = {1, 2, 3, 4, 5}
print(6 in nums_set)    # 输出False
print(1 in nums_set)    # 输出True
#集合也是一个可迭代对象，可以通过for循环来遍历得到集合中的每一个元素。比如以下代码
students_set = {"xiaoming", "xiaohong", "xiaohei", "xiaogang"}
for student in students_set:
    print(student)
#使用集合的add()方法进行元素添加，其中括号内的参数传入待添加的元素。比如
nums_set = {1, 2, 3, 4, 5}
nums_set.add(6)
print(nums_set)
#使用集合的remove()方法进行元素删除，其中括号内的参数传入待删除的元素。比如
#要特别注意，使用remove()方法进行元素删除时，必须确保该元素已经位于集合中。
nums_set = {1, 2, 3, 4, 5}
nums_set.remove(3)
print(nums_set)
#集合中的元素是不能够直接修改的，但我们可以通过添加和删除，来修改集合中某个元素的值。比如以下代码
nums_set = {1, 2, 3, 4, 5}
nums_set.remove(3)
nums_set.add(6)
print(nums_set)
#集合的特点是：无序性、无重复性、可哈希性。
#集合没有索引的概念
#集合中的元素的值必须是唯一的，不可重复的。
#在实际应用，我们经常使用集合的这一个特性，结合列表和集合之间的相互转化，实现列表的去重操作。
nums = [2, 2, 4, 4, 3, 3, 1, 1]
nums_no_repeat = list(set(nums))
print(nums_no_repeat)
#集合中的元素必须是可哈希的（hashable）。
#可哈希的数据类型一定是不可变数据类型，即数字、字符串、元组等等。
#这意味着集合中必须储存不可变数据类型的元素。
